iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 13
0
Modern Web

Golang - 從打造一個 API 開始學起系列 第 13

[Day13] 回傳資料的格式與錯誤訊息

  • 分享至 

  • xImage
  •  

本文同步發表於: Sponge Records

本文將會建立回傳格式的共用格式與找不到路由時的錯誤訊息

建立回傳訊息的元件

我們將會實作 utils\utils.go ,定義回傳的格式,由於這是每一個功能都會用到的功能,因此我們把它獨立抽出來模組化,方便開發使用

utils.go

package utils

import (
	"encoding/json"
	"net/http"
)

func Message(status bool, message string) (map[string]interface{}) {
	return map[string]interface{} {"status" : status, "message" : message}
}

//以 json 格式回應
func Respond(w http.ResponseWriter, data map[string] interface{})  {
	w.Header().Add("Content-Type", "application/json")
	json.NewEncoder(w).Encode(data)
}

之後透過 utils.go 即可將資訊轉成 JSON 呈現

API 名稱錯誤時的處理

如果出現路由內沒有的名稱,就會透過 utils\utils.go 標示狀態為失敗,並且顯示 not found

errors.go

package application

import (
	"net/http"
	u "golang-api/utils"
)

var NotFoundHandler = func(next http.Handler) http.Handler {

    //當找不到路由名稱時
	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		w.WriteHeader(http.StatusNotFound)
        //透過 u.Message 加上狀態與訊息,與透過 u.Respond 回傳 JSON 格式的訊息
		u.Respond(w, u.Message(false, "not found"))
		next.ServeHTTP(w, r)
	})
}

之後透過 errors.go 就能在錯誤時顯示訊息,幫助使用時除錯

下回預告

下回將開始進入會員系統設計,實作帳號註冊功能


上一篇
[Day12] API 與 postgresql 連接
下一篇
[Day14] 實作創建帳號
系列文
Golang - 從打造一個 API 開始學起30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言